//
//  MusicPlayerManager.m
//  product_B
//
//  Created by zyc on 16/5/31.
//  Copyright © 2016年 lanou. All rights reserved.
//

#import "MusicPlayerManager.h"
#import <MediaPlayer/MediaPlayer.h>
@implementation MusicPlayerManager
// 单例是为了保证 该类只有一个对象 这个类中只会有一个播放器的存在
+ (MusicPlayerManager *)shareInstance
{
    static MusicPlayerManager *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[MusicPlayerManager alloc]init];
        
    });
    return manager;
}

- (instancetype)init
{
    self = [super init];
    if (self) {
        // 第一次调用 单利类的时候 就把播放器创建出来 但是不赋值任何的item
        // 真正播放歌曲的时候 再通过这个方法 赋值item
        
        self.player = [[AVPlayer alloc]init];
        _musicArray = [NSMutableArray array];
        self.player.volume = 0.5;
        
        
    }
    return self;
}

// 播放状态
- (void)playerPlay
{
    [self.player play];
    self.isPlay = YES;
    
}

// 暂停状态
- (void)playerPause
{
    [self.player pause];
    self.isPlay = NO;
}

#pragma mark --- 控制音量的方法 ---
- (void)playVolumeWithFloat:(CGFloat)volumeFloat
{
    self.player.volume = volumeFloat;
}

#pragma mark --- 控制进度的方法 ---
- (void)playProgressWithFloat:(CGFloat)progressFloat
{
    [self.player seekToTime:CMTimeMakeWithSeconds(progressFloat, 1) completionHandler:^(BOOL finished) {
        [self playerPlay];
    }];
}


#pragma mark --- 播放歌曲的方法 ---
- (void)replaceItemWithUrlString:(NSString *)urlString
{
    self.playUrl = urlString;
    AVPlayerItem *item = [[AVPlayerItem alloc]initWithURL:[NSURL URLWithString:urlString]];
    [self.player replaceCurrentItemWithPlayerItem:item];
    [self playerPlay];
}

#pragma mark --- 自动播放下一首的的方法 ---
- (void)autoPlayNext
{
    // 如果已经是最后一首
    if (self.index == self.musicArray.count - 1)
    {
        // 变成第一首
        self.index = 0;
    }
    // 如果不是最后一首 下标++
    else
    {
        self.index++;
    }
}

#pragma mark --- 播放或者暂停的方法 ---
- (void)playerPlayAndPause
{
    // 如果是播放 让它暂停
    if (self.isPlay == YES)
    {
        [self playerPause];
    }
    // 如果是暂停 让它播放
    else
    {
        [self playerPlay];
    }
}

#pragma mark --- 上一首的方法 ---
- (void)playAbove
{
    // 如果是第一首 播放最后一首
    if (self.index == 0)
    {
        NSLog(@"已经是第一首");
        self.index = self.musicArray.count - 1;
        return;
    }
    self.index--;
    
}

#pragma mark --- 下一首的方法 ---
- (void)playNext
{
    // 如果是最后一首 播放第一首
    if (self.index == self.musicArray.count - 1)
    {
        NSLog(@"已经是最后一首");
        self.index = 0;
        return;
    }
    self.index++;
    
}

@end
